#include <stdio.h>
#include "head.h"

// 简单宏定义 #define    <宏名>    <字符串>
#define TEST 100
// 带参数的宏定义（宏函数）   #define    <宏名>（参数表）    <宏体>
#define ADD(a, b) (a + b)
#define MAX(a, b) (a > b ? a : b)
#define N (2 + 1)

#define LENGTH(arr) (sizeof(arr) / sizeof(arr[0]))

extern inline int xxx(int a);
int yyy(int a)
{
    return a + a;
}
int main()
{
    int a = 10;

    printf("a+50 = %d\n", a + 50);

    printf("TEST+50 = %d\n", TEST + 50);
    printf("N+50 = %d\n", N * 50);
    // 宏定义 预编译阶段就会替换掉
    printf("ADD = %d\n", ADD(5, 10) + 50);
    printf("ADD = %d\n", MAX(5, 10) + 50);

    int arr[] = {1, 2, 3, 4, 5};
    printf("LENGTH = %d\n", LENGTH(arr));

    printf("xxx(10) = %d\n", xxx(10)); // 内联函数调用
    printf("xxx(10) = %d\n", xxx(10)); // 内联函数调用

    printf("yyy(10) = %d\n", yyy(10)); // 普通函数调用

    return 0;
}